/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.persistence.entity;

import java.io.Serializable;
import java.sql.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

/**
 *
 * @author Henry.Quiroga
 */
@Entity
public class Compra implements Serializable {

    private long id;
    private String orden;
    private Cliente cliente;
    private List<ItemCompra> items;
    private Date fecha;
    private long valorTotal;
    private String formaPago;
    private String nombrePago;
    private String numeroTarjeta;
    private String codigoSeguridad;
    private String aprobacion;
    private Date fechaExpiracion;
    private int cuotas;

    /**
     * Constructor de la clase
     */
    public Compra() {
    }

    /**
     * Obtiene el identificador de la clase
     * @return
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        return id;
    }

    /**
     * Establece el identificador de la clase
     * @return
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * Obtiene la aprovacion de la compra
     * @return
     */
    public String getAprobacion() {
        return aprobacion;
    }

    /**
     * Establece la aprobacion del pago
     * @param aprobacion
     */
    public void setAprobacion(String aprobacion) {
        this.aprobacion = aprobacion;
    }

    /**
     * Obtiene el cliente asociado a la compra
     * @return
     */
    @ManyToOne
    public Cliente getCliente() {
        return cliente;
    }

    /**
     * Establece el cliente asociado a la compra
     * @param cliente
     */
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    /**
     * Obtiene el codigo de seguridad de la tarjeta
     * @return
     */
    public String getCodigoSeguridad() {
        return codigoSeguridad;
    }

    /**
     * Establece el codigo de seguridad de la tarjeta
     * @param codigoSeguridad
     */
    public void setCodigoSeguridad(String codigoSeguridad) {
        this.codigoSeguridad = codigoSeguridad;
    }

    /**
     * Obtiene el numero de cuotas cuando la transaccion es por tarjeta de
     * credito
     * @return
     */
    public int getCuotas() {
        return cuotas;
    }

    /**
     * Establece el numero de cuotas cuando la transaccion es por tarjeta de
     * credito
     * @param cuotas
     */
    public void setCuotas(int cuotas) {
        this.cuotas = cuotas;
    }

    /**
     * Obtiene la fecha de la compra
     * @return
     */
    public Date getFecha() {
        return fecha;
    }

    /**
     * Establece la fecha de la compra
     * @param fecha
     */
    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    /**
     * Obtiene la fecha de expiracion de la tarjeta de credito asociada a la
     * compra
     * @return
     */
    public Date getFechaExpiracion() {
        return fechaExpiracion;
    }

    /**
     * Establece la fecha de expiracion de la tarjeta de credito asociada a la
     * compra
     * @param fechaExpiracion
     */
    public void setFechaExpiracion(Date fechaExpiracion) {
        this.fechaExpiracion = fechaExpiracion;
    }

    /**
     * Obtiene la forma de pago empleada en la compra
     * @return
     */
    public String getFormaPago() {
        return formaPago;
    }

    /**
     * Establece la forma de pago empleada en la compra
     * @param formaPago
     */
    public void setFormaPago(String formaPago) {
        this.formaPago = formaPago;
    }

    /**
     * Obtiene la lista de items asociados a la compra
     * @return
     */
    @OneToMany(cascade=CascadeType.ALL, mappedBy="compra")
    public List<ItemCompra> getItems() {
        return items;
    }

    /**
     * Establece la lista de items asociados a la compra
     * @param items
     */
    public void setItems(List<ItemCompra> items) {
        this.items = items;
    }

    /**
     * Obtiene el nombr del pago empleado
     * @return
     */
    public String getNombrePago() {
        return nombrePago;
    }

    /**
     * Establece el nombre del tipo de pago
     * @param nombrePago
     */
    public void setNombrePago(String nombrePago) {
        this.nombrePago = nombrePago;
    }

    /**
     * Obtiene el numero de la tarjeta asociado a la compra
     * @return
     */
    public String getNumeroTarjeta() {
        return numeroTarjeta;
    }

    /**
     * Establece el numero de tarjeta asociado a la compra
     * @param numeroTarjeta
     */
    public void setNumeroTarjeta(String numeroTarjeta) {
        this.numeroTarjeta = numeroTarjeta;
    }

    /**
     * Obtiene el numero de orden asociado a la compra
     * @return
     */
    public String getOrden() {
        return orden;
    }

    /**
     * Establece el numero de orden asociado a la compra
     * @param orden
     */
    public void setOrden(String orden) {
        this.orden = orden;
    }

    /**
     * Obtiene el valor total de la compra
     * @return
     */
    public long getValorTotal() {
        return valorTotal;
    }

    /**
     * Establece el valor total de la compra
     * @param valorTotal
     */
    public void setValorTotal(long valorTotal) {
        this.valorTotal = valorTotal;
    }
}
